package pe.edu.unmsm.fiee.sispagos.integracion.dao.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;

import pe.edu.unmsm.fiee.sispagos.integracion.dao.VoucherPagoDAO;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.ChartConsolidadoCptoDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.ChartTotalCptoxMesDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.DigitadorVoucherDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.FilaExcelRecaudacionDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.VWCxCAlumnoDTO;
import pe.edu.unmsm.fiee.sispagos.negocio.modelo.VWVoucherPagoDTO;

@Repository
public class VoucherPagoDAOImpl extends SqlMapClientDaoSupport implements VoucherPagoDAO {

	@Autowired
	public VoucherPagoDAOImpl(SqlMapClient sql) {
		super.setSqlMapClient(sql);
	}
	
	@Override
	public List<VWVoucherPagoDTO> selectVwRecaudacionxAnioyMes(
			Integer anioSeleccionado, Integer mesSeleccionado) {
		Map map=new HashMap();
		map.put("anio", anioSeleccionado);
		map.put("mes", mesSeleccionado);
		return (List<VWVoucherPagoDTO>)getSqlMapClientTemplate().queryForList("VoucherPago.selectVwRecaudacionxAnioyMes", map);
	}

	@Override
	public void insertVoucherPago(
			FilaExcelRecaudacionDTO filaExcelRecaudacionDTO) {
		getSqlMapClientTemplate().insert("VoucherPago.insertVoucherPago", filaExcelRecaudacionDTO);
	}

	@Override
	public List<FilaExcelRecaudacionDTO> selectRecaudacionExcelValidasxAnioMes(
			Integer anioSeleccionado, Integer mesSeleccionado) {
		Map map= new HashMap();
		map.put("anio", anioSeleccionado);
		map.put("mes", mesSeleccionado);
		return (List<FilaExcelRecaudacionDTO>)getSqlMapClientTemplate().queryForList("VoucherPago.selectRecaudacionExcelValidasxAnioMes", map);
	}

	@Override
	public List<FilaExcelRecaudacionDTO> selectRecaudacionExcelAluNoExistxAnioMes(
			Integer anioSeleccionado, Integer mesSeleccionado) {
		Map map= new HashMap();
		map.put("anio", anioSeleccionado);
		map.put("mes", mesSeleccionado);
		return (List<FilaExcelRecaudacionDTO>)getSqlMapClientTemplate().queryForList("VoucherPago.selectRecaudacionExcelAluNoExistxAnioMes", map);
	}

	@Override
	public FilaExcelRecaudacionDTO selectRecaudacionExcelxId(
			Integer idFilaExcelRec) {
		return (FilaExcelRecaudacionDTO)getSqlMapClientTemplate().queryForObject("VoucherPago.selectRecaudacionExcelxId", idFilaExcelRec);
	}

	@Override
	public void updateVoucherPago(FilaExcelRecaudacionDTO filaExcelEditar) {
		getSqlMapClientTemplate().update("VoucherPago.updateVoucherPago", filaExcelEditar);
	}

	@Override
	public Integer selectCountRecaudacionenAnioyMes(String anio,
			String mes) {
		Map map=new HashMap();
		map.put("anio", anio);
		map.put("mes", mes);
		return (Integer)getSqlMapClientTemplate().queryForObject("VoucherPago.selectCountRecaudacionenAnioyMes", map);
	}

	@Override
	public List<FilaExcelRecaudacionDTO> selectRecaudacionExcelCptoNoExistxAnioMes(
			Integer anioSeleccionado, Integer mesSeleccionado) {
		Map map= new HashMap();
		map.put("anio", anioSeleccionado);
		map.put("mes", mesSeleccionado);
		return (List<FilaExcelRecaudacionDTO>)getSqlMapClientTemplate().queryForList("VoucherPago.selectRecaudacionExcelCptoNoExistxAnioMes", map);
	}

	@Override
	public List<ChartConsolidadoCptoDTO> selectConsolidadoCptosxAnioMes(
			Integer anioSeleccionado, Integer mesSeleccionado) {
		Map map= new HashMap();
		map.put("anio", anioSeleccionado);
		map.put("mes", mesSeleccionado);
		return (List<ChartConsolidadoCptoDTO>)getSqlMapClientTemplate().queryForList("VoucherPago.selectConsolidadoCptosxAnioMes", map);
	}

	@Override
	public Integer selectCountVoucherxNumVoucher(String numeroVoucherPago) {
		return (Integer)getSqlMapClientTemplate().queryForObject("VoucherPago.selectCountVoucherxNumVoucher", numeroVoucherPago);
	}

	@Override
	public ArrayList<ChartTotalCptoxMesDTO> selectTotalesCptosxMes(String cpto) {
		return (ArrayList<ChartTotalCptoxMesDTO>)getSqlMapClientTemplate().queryForList("VoucherPago.selectSubTotalCptoxMes", cpto);
	}

	@Override
	public List<VWCxCAlumnoDTO> selectVWCxcporCodigoAlumno(String codigoAlumno) {
		return (List<VWCxCAlumnoDTO>)getSqlMapClientTemplate().queryForList("VoucherPago.selectVWCxcporCodigoAlumno", codigoAlumno);
	}

	@Override
	public void deleteVoucherPago(Integer idFilaExcelRec, Integer idUsuario) {
		Map map= new HashMap();
		map.put("idUsuario", idUsuario);
		map.put("idFilaExcel", idFilaExcelRec);
		getSqlMapClientTemplate().delete("VoucherPago.deleteVoucherPago", map);
	}

	@Override
	public FilaExcelRecaudacionDTO selectRecaudacionExcelxNroVoucher(String numeroVoucherPago) {
		return (FilaExcelRecaudacionDTO)getSqlMapClientTemplate().queryForObject("VoucherPago.selectRecaudacionExcelxNroVoucher",numeroVoucherPago);
	}

	@Override
	public List<DigitadorVoucherDTO> selectVoucherDigitadorAnioMes(
			Integer anioSeleccionado, Integer mesSeleccionado, Integer idUsuario) {
		Map map= new HashMap();
		map.put("anioSeleccionado", anioSeleccionado);
		map.put("mesSeleccionado", mesSeleccionado);
		map.put("idUsuario", idUsuario);
		return (List<DigitadorVoucherDTO>)getSqlMapClientTemplate().queryForList("VoucherPago.selectVoucherDigitadorAnioMes", map);
	}

}
